<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>

        function timeout(time){
            return new Promise(function(resolve, reject){
                setTimeout(function(){
                    resolve();
                }, time)
            })
        }

        
        // timeout(3000).then(function(){
        //     console.log("3s后")
        // })
        // timeout(3000).then(function(){
        //     // console.log("2s后")
        // })
        // timeout(3000).then(function(){
        //     // console.log("1s后")
        // })

        // Promise.all([timeout(3000), timeout(2000), timeout(4000)]).then(function(){
        //     console.log("123");
        // })

        // 工作中经常会遇到同时发出去好几个ajax请求，那么有时需要在所有的请求都完成后执行某个操作， 这个时候，我们就可以使用 Promise.all方法将所有的请求全部放进来，.all方法会返回一个新的Promise对象，这个对象的.then方法中的回调会在所有的ajax请求都完成之后，执行！


        Promise.race([timeout(3000), timeout(2000), timeout(4000)]).then(function(){
            console.log("ok")
        })

        // race方法是在一组Promise中只要有一个完成的，那么会执行回调


        //1. all其实就是所有的都完成才算完成
        //2. race只要有一个完成就直接执行回调了

    </script>
</body>

</html>